package com.zky.common.utils;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

/**
 * ：大风吹丑鬼 山海等烂泥
 * 2021/6/24 13:35
 *
 * @Author DL龙龙
 */
public class BigKan {
    /**
     * 随机递减
     * @param count 总刀数  需砍刀数-已砍刀数
     * @param price 原价  总价格-商品低价-好友帮砍总金额
     */
    public static   List<BigDecimal> randomB(BigDecimal count, BigDecimal price){
        //已砍价格的集合
        List<BigDecimal> alreadyList = new ArrayList<>();
        //已砍的钱的总和
        BigDecimal alreadyCut = BigDecimal.ZERO;
        for(int i = 0;i<count.intValue();i++){
            //此次砍价的最低钱数（总价-已砍总价/总次数-已砍次数）（相当于是向上随机）（转换为单位分）
            Integer min = (price.subtract(alreadyCut)).divide(count.subtract(new BigDecimal(alreadyList.size())),2,BigDecimal.ROUND_UP).multiply(new BigDecimal(100)).intValue();
            //此次砍价的最高钱数（最低价格的2倍）
            //这个倍数越高，砍价的幅度跳动越大。建议设置到1-2.（不能超过2.因为有可到导致总刀数不准确）
            Integer max = min*2;
            //此次砍的价格（最低钱数到最高钱数的随机）
            BigDecimal cutPrice = new BigDecimal(min + new Random().nextInt(max-min)).divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_UP);
            //System.out.println(cutPrice);
            //最后一刀保证价格准确
            if(i==count.intValue()-1){
                cutPrice = price.subtract(alreadyCut);
            }
            alreadyCut = alreadyCut.add(cutPrice);
            alreadyList.add(cutPrice);
        }
        return alreadyList;
    }
}
